package com.storm.auth.model.table

import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import com.storm.common.annotation.NoArg
import java.time.LocalDateTime

/**
 * 用户信息表
 */
@NoArg
@TableName("user")
data class User (
        /**
         * 用户id
         */
        @TableId
        val userId: String,
        /**
         * 手机号
         */
        val phone: String,
        /**
         * 用户名
         */
        val username: String,
        /**
         * 密码
         */
        val password: String,
        /**
         * 盐
         */
        val salt: String,

        /**
         * 昵称
         */
        val nickname: String,

        /**
         * 注册时间
         */
        val createTime: LocalDateTime,
        /**
         * 是否可用
         */
        val enabled: Boolean,
        /**
         * 更新时间
         */
        val updateTime: LocalDateTime

)

/**
 * 菜单表
 */
@NoArg
@TableName("menu")
data class Menu(
    /**
     * 菜单id
     */
    @TableId
    val id: String,
    /**
     * 功能名称
     */
    val name: String,
    /**
     * 父菜单id
     */
    val parentId: String?,
    /**
     * 图标
     */
    val icon: String,
    /**
     * 顺序
     */
    val sort: Int,
    /**
     * 地址
     */
    val href:String,
    /**
     * 类型
     */
    val type:Int,
    /**
     * 创建时间
     */
    val createTime: LocalDateTime,
    /**
     * 更新时间
     */
    val updateTime: LocalDateTime

)

/**
 * 角色表
 */
@NoArg
@TableName("role")
data class Role(
        /**
         * 角色id
         */
        @TableId
        val id: String,
        /**
         * 父id
         */
        val parentId: String?,
        /**
         * 角色名称
         */
        val name: String,
        /**
         * 描述
         */
        val description:String,
        /**
         * 创建时间
         */
        val createTime: LocalDateTime,
        /**
         * 更新时间
         */
        val updateTime: LocalDateTime,
)

/**
 * 资源表
 */
@NoArg
@TableName("resource")
class Resource(
        /**
         * 资源id
         */
        val id: String,
        /**
         * 资源url
         */
        val url:String,
        /**
         * 资源名称
         */
        val name:String?,
        /**
         * 资源模块名
         */
        val modelName:String?,
        /**
         * 方法类型
         *@see org.springframework.http.HttpMethod
         */
        val method:String
)

/**
 * 用户角色关联表
 */
@NoArg
@TableName("user_role")
data class UserRole(
        /**
         * 用户id
         */
        val userId:String,
        /**
         * 角色id
         */
        val roleId:String,
)

/**
 * 角色菜单关联表
 */
@NoArg
@TableName("role_menu")
data class RoleMenu(
        /**
         * 角色id
         */
        val roleId: String,
        /**
         * 菜单id
         */
        val menuId: String,
)

/**
 * 角色资源表
 */
@NoArg
@TableName("role_resource")
data class RoleResource(
        /**
         * 角色id
         */
        val roleId: String,
        /**
         * 资源id
         */
        val resourceId: String,

)
